﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using University.Workshop.Model;
using System.Text.RegularExpressions;
using University.Workshop.DataAccess;

namespace University.Workshop.Business
{
    public static class GroupManager
    {
        public static University.Workshop.Model.Group RegisterNewGroup(
            string company,
            string discount)
        {
            if (string.IsNullOrEmpty(company) ||
                string.IsNullOrEmpty(discount))
            {
                throw new DataValidationException("Todos los campos son requeridos.");
            }

            if (!(Regex.IsMatch(company, @"^[\p{L} \p{N}]+$")))  //solo letras y números, inclusive tildes, y espacios
            {
                throw new DataValidationException("Empresa inválida, solo se permiten letras y números.");
            }

            if (!(Regex.IsMatch(discount, "^[0-9]+$")))
            {
                throw new DataValidationException("Descuento inválido, debe tener solo números (mínimo 0).");
            }

            University.Workshop.Model.Group existingCode = GroupDataAccess.GetGroupByCompany(company);
            if (existingCode != null)
            {
                throw new DataValidationException("No es posible realizar el registro, la empresa ya se encuentra registrada.");
            }


            University.Workshop.Model.Group newGroup = new University.Workshop.Model.Group
            {
                Company = company,
                Discount = discount
            };

            return newGroup;
        }

        public static University.Workshop.Model.Group UpdateGroup(
            string company,
            string discount)
        {
            if (string.IsNullOrEmpty(company) ||
                string.IsNullOrEmpty(discount))
            {
                throw new DataValidationException("Todos los campos son requeridos.");
            }

            if (!(Regex.IsMatch(company, @"^[\p{L} \p{N}]+$")))  //solo letras y números, inclusive tildes, y espacios
            {
                throw new DataValidationException("Empresa inválida, solo se permiten letras y números.");
            }

            if (!(Regex.IsMatch(discount, "^[0-9]+$")))
            {
                throw new DataValidationException("Descuento inválido, debe tener solo números (mínimo 0).");
            }

            University.Workshop.Model.Group newGroup = new University.Workshop.Model.Group
            {
                Company = company,
                Discount = discount
            };

            return newGroup;
        }
    }
}
